<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>es5</title>
</head>
<body>
    <script>
        /*
        
      13. forEach()
        + 语法: 数组.forEach( function (item, index, origin) {} )
          => item: 表示数组的每一项
          => index: 表示数组每一项的索引
          => origin: 表示原始数组
        + 作用: 遍历数组
        + 返回值: 没有(undefined)


      14. map()
        + 语法: 数组.map( function (item, index, origin) {} )
          => item: 表示数组的每一项
          => index: 表示数组每一项的索引
          => origin: 表示原始数组
        + 作用: 映射数组
        + 返回值: 和原始数组长度一样的数组, 只不过内部数据经过映射加工
        + 注意: 映射条件以 return 的形式书写


      15. filter()
        + 语法: 数组.filter( function (item, index, origin) {} )
          => item: 表示数组的每一项
          => index: 表示数组每一项的索引
          => origin: 表示原始数组
        + 作用: 过滤数组
        + 返回值: 必然是一个新数组, 内部存储的是原始数组内过滤出来的部分数据
        + 注意: 过滤条件以 return 的形式书写


      16. find()
        + 语法: 数组.find( function (item, index, origin) {} )
          => item: 表示数组的每一项
          => index: 表示数组每一项的索引
          => origin: 表示原始数组
        + 作用: 在原始数组内查找满足条件的第一项
        + 返回值: 找到的数据
        + 注意: 查找条件以 return 的形式书写


      17. findIndex()
        + 语法: 数组.findIndex( function (item, index, origin) {} )
          => item: 表示数组的每一项
          => index: 表示数组每一项的索引
          => origin: 表示原始数组
        + 作用: 在原始数组内查找满足条件的第一项的索引
        + 返回值: 找到的数据的索引
        + 注意: 查找条件以 return 的形式书写


      18. every()
        + 语法: 数组.every( function (item, index, origin) {} )
          => item: 表示数组的每一项
          => index: 表示数组每一项的索引
          => origin: 表示原始数组
        + 作用: 判断数组内是否每一个都满足条件
        + 返回值: 一个布尔值
          => true, 说明数组内每一个数据都满足条件
          => false, 说明数组内至少有一个是不满足条件的
        + 注意: 判断条件以 return 的形式书写


      19. some()
        + 语法: 数组.some( function (item, index, origin) {} )
          => item: 表示数组的每一项
          => index: 表示数组每一项的索引
          => origin: 表示原始数组
        + 作用: 判断数组内是否有某一个满足条件
        + 返回值: 一个布尔值
          => true, 说明数组内至少有某一个是满足条件的
          => false, 说明数组内所有的项都不满足条件
        + 注意: 判断条件以 return 的形式书写


      20. reduce()
        + 语法: 数组.reduce(function (prev, item, index, origin) {}, init)
          => prev: 表示初始值或者上一次的运算结果
          => item: 表示数组的每一项
          => index: 表示数组每一项的索引
          => origin: 表示原始数组
        + 作用: 用来实现叠加效果
        + 返回值: 最终叠加结果
        + 注意: 叠加条件以 return 的形式书写
        + 注意: prev 的值, 如果你传递了 init, 就是 init 的值, 如果你没有传递 init, 那么就是数组 [0] 的值
        + 注意: 如果你传递了 init, 循环执行 length 次, 如果你没有传递 init, 循环执行 length - 1 次, 少的是第一次
    */

    // forEach() 高阶函数

    // var arr = [100,249,376,498,582,265,872,969];
    // for
    // for(var i=0;i<arr.length;i++){
    //     alert(arr[i]);
    // }
    // arr.forEach(function(a,b,c){
    //     console.log(a,b);
    // })
    
    // var sum = 0;
    // for(var i=0;i<arr.length;i++){
    //     sum+=arr[i]
    // }
    // alert(sum)

    // arr.forEach(function(a){
    //     sum += a

    // })
    // alert(sum)
    // var maxIndex=0
    // arr.forEach(function(a,b){
    //     if(a>arr[maxIndex]){
    //         maxIndex = b;
    //     }
    // })
    // alert(maxIndex)

        // 当我们想让数据的每个元素执行相同的操作，那么就用map方法
    // var res = arr.map(function(item,index){
    //     return item+2000
    // })
    // alert(res);


    //   https://www.baidu.com
    // www.baidu.com  www.sohu.com  www.qq.com 
    // meinv.jpg  shuaige.jpg 
        // 开发过程中 需要 从 数组中筛选 符合条件的数据
    // var test = arr.filter(function(item,index){
    //     return item>=500
    // })

    // document.write(test,test instanceof Array);

    // var arr = [100,249,376,498,582,265,872,969];
    // document.write('原始数组:',arr);

    // var res = arr.reduce(function(prev,item){
    //     return prev+item
    // })
    // document.write(res)

    // var res = arr.find(function(item){
    //     return item % 100 == 0
    // })

    // document.write(res)

    // var arr = [{'name':'张飞','score':59},{'name':'赵云','score':99},{'name':'关云长','score':98}]
    // var res = arr.find(function(item){
    //     return item.name == '赵云'
    // })
    // document.write(res.score)



    // findIndex
    // var arr = [{'name':'张飞','score':59},{'name':'赵云','score':99},{'name':'关云长','score':98}]
    // var res = arr.findIndex(function(item){
    //     return item.name == '赵云'
    // })
    // document.write(res)

    // var arr = [{'name':'张飞','score':59},{'name':'赵云','score':99},{'name':'关云长','score':98}]
    // var res = arr.every(function(item){
    //     return item.score>=55;
    // })
    // document.write(res)



    var arr = [{'name':'张飞','score':59},{'name':'赵云','score':99},{'name':'关云长','score':98}]
    var res = arr.some(function(item){
        return item.score>=60;
    })
    document.write(res)


    </script>
</body>
</html>